diff options
author | flu0r1ne <flu0r1ne@flu0r1ne.net> | 2021-07-21 03:59:15 -0500 |
---|---|---|
committer | flu0r1ne <flu0r1ne@flu0r1ne.net> | 2021-07-21 03:59:15 -0500 |
commit | 437268370661087dbe31323efb18dfe1a518da33 (patch) | |
tree | cffc95cc50da55eced9ed1e3b68502c68f01ca19 /pages/logs/[directory].tsx | |
parent | 51967b62cd274b10326a604d4db670e9e89f8fd5 (diff) | |
download | homepage-437268370661087dbe31323efb18dfe1a518da33.tar.xz homepage-437268370661087dbe31323efb18dfe1a518da33.zip |
Dynamic markdown page generation with preloading
Diffstat (limited to 'pages/logs/[directory].tsx')
-rw-r--r-- | pages/logs/[directory].tsx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/pages/logs/[directory].tsx b/pages/logs/[directory].tsx new file mode 100644 index 0000000..00fe78d --- /dev/null +++ b/pages/logs/[directory].tsx @@ -0,0 +1,58 @@ +import path from 'path'; +import { GetStaticProps, GetStaticPropsContext } from 'next'; +import React, { FC } from 'react'; +import { getPosts, getMarkdown, Post, getPostFromDirectory } from '../../utils/Posts'; +import Markdown from '../../components/Markdown'; +import DefaultPage from '../../templates/Default'; + +interface Props { + post: Post; + markdown: string; +} + +const Page : FC<Props> = ({ post, markdown }) => { + return ( + <> + <DefaultPage + path={"/logs/" + post.directory} + > + <Markdown + md={markdown} + /> + </DefaultPage> + </> + ); +} + +export default Page; + +export const getStaticProps: GetStaticProps = async ( + context: GetStaticPropsContext + ) => { + const directory = context.params!.directory as string; + + const post = await getPostFromDirectory(directory); + + const markdown = await getMarkdown(post); + + return { + props: { post, markdown }, + } +} + +export async function getStaticPaths() { + const posts = await getPosts(); + + const paths = posts.map((post) => { + return { + params: { + directory: post.directory + } + }; + }); + + return { + paths, + fallback: false + }; +}
\ No newline at end of file |